\section{Structures de données utilisées}
Pour construire la bibliothèque des \texttt{thread} demandée, on a choisi d'utiliser la structure de donnée \texttt{File} implémentée par une liste doublement chainée. La structure est appelée \texttt{fifoThread} et elle est définie dans le fichier \texttt{fifoThread.h}:
\begin{lstlisting}
 Structure fifoThread
|  element * head;  | un pointeur vers le premier element de la file
|  element * tail;  | un pointeur vers le dernier element de la file
\end{lstlisting}
La structure \texttt{element} est définie comme suit dans le fichier \texttt{fifoThread.h}
\begin{lstlisting}
 Structure element
| thread * th;                   | un pointeur vers la stucture thread
| struct element * next;         | un pointeur vers l'element suivant
| struct element * previous;     | un pointeur vers l'element precedent 
\end{lstlisting}
La structure \texttt{thread} représente toutes les informations concernant un thread et elle est définie dans le fichier \texttt{threadStructure.h} qui contient aussi toute les fonctions représentant les opérations élémentaires sur un thread.
\begin{lstlisting}
 Structure thread
|  int tid;                       | l'identifiant du thread
|  int priorite;                  | la priorite du thread
|  ucontext_t * context;          | le context du thread de type ucontext_t*
|  status state;                  | le status du thread qui est soit READY soit FINISHED
|  void * valRetour;              | la valeur de retour du thread
|  void ** adresseValRetour;      | l'adresse de la valeur de retour du thread
\end{lstlisting}

Pour stocker les threads nous utilisons deux \texttt{Files}, une pour les threads qui n'ont pas encore terminé leurs exécutions et l'autre pour les threads qui ont terminé. 
